﻿using System;

namespace Dexter.PluginManager {
	public class PluginException : Exception {
		/// <summary>
		/// Initializes a new instance of the <see cref="T:Dexter.Core.Exceptions.DexterException"/> class.
		/// </summary>
		/// <param name="message">The message.</param>
		/// <param name="pluginUniqueKey">The plugin unique key.</param>
		public PluginException(string message, string pluginUniqueKey) : base(message) {
			PluginUniqueKey = pluginUniqueKey;
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="T:Dexter.Core.Exceptions.DexterException"/> class.
		/// </summary>
		/// <param name="message">The message.</param>
		/// <param name="innerException">The inner exception.</param>
		/// <param name="pluginUniqueKey">The plugin unique key.</param>
		public PluginException(string message, Exception innerException, string pluginUniqueKey) : base(message, innerException) {
			PluginUniqueKey = pluginUniqueKey;
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="T:Dexter.Core.Exceptions.DexterException"/> class.
		/// </summary>
		/// <param name="pluginUniqueKey">The plugin unique key.</param>
		public PluginException(string pluginUniqueKey) {
			PluginUniqueKey = pluginUniqueKey;
		}

		/// <summary>
		/// Gets or sets the plugin unique key.
		/// </summary>
		/// <value>
		/// The plugin unique key.
		/// </value>
		public string PluginUniqueKey { get; protected set; }
	}
}